#include <stdio.h>
#include "single_linked_list.cpp"

// 将带头结点的链表 奇偶分离为两个链表 并保持顺序不变
void SplitLink(LinkedList &L, LinkedList &res1, LinkedList &res2) {
    LNode *ptr = L->next;
    InitList(res1); // 生成奇偶链表的头结点
    InitList(res2);
    LNode *p = res1, *q = res2;
    while (ptr != NULL)
    {
        if (ptr->data % 2 == 0) {
            p->next = ptr;
            p = p->next;
        } else {
            q->next = ptr;
            q = q->next;
        }
        ptr = ptr->next;
    }
    p->next = NULL;
    q->next = NULL;
}

int main() {
    LinkedList L;
    InitList(L);

    // 插入
    ListAppend(L, 2);
    ListAppend(L, 5);
    ListAppend(L, 9);
    ListAppend(L, 7);
    ListAppend(L, 3);
    ListAppend(L, 6);
    PrintList(L);

    LinkedList res1, res2;
    SplitLink(L, res1, res2);
    PrintList(res1);
    PrintList(res2);

    return 0;
}